package main;

import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;

import model.VerwArtikel;
import model.VerwEinstellungen;
import tcpVerbindung.VerwaltungTCP;
import verwDatenbanken.VerwAuftragNutzen_DB;
import view.Grundbild;
import view.MenueLinks;
import view.MenueOben;
import controler.ContEinstellungen;
import controler.ContMenue;

public class Main {

	private VerwaltungTCP verwaltungTCP;

	private VerwArtikel modVerwArtikel;
	private ContMenue contMenue;
	
	private VerwEinstellungen verwEinstellungen;
	private ContEinstellungen contEinstellungen;

	private JFrame mainFrame;

	private MenueLinks pnlMenueLinks;
	private Grundbild pnlGrundbild;
	private MenueOben pnlMenueOben;
	private JScrollPane scrCardLayout;
	
	// Datenbanken
	private VerwAuftragNutzen_DB verwAuftragNutzen_DB;

	/**
	 * Konstruktor
	 */
	public Main() {
		try {
			verwAuftragNutzen_DB = new VerwAuftragNutzen_DB();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		// initialisierung der Einstellungen
		verwEinstellungen = new VerwEinstellungen();
		contEinstellungen = new ContEinstellungen(verwEinstellungen);
		
		// Initialisierung Models
		modVerwArtikel = new VerwArtikel();		
		contMenue = new ContMenue(modVerwArtikel, verwEinstellungen, verwAuftragNutzen_DB);
		
		verwaltungTCP = new VerwaltungTCP(modVerwArtikel);

		mainFrame = new JFrame("Messplatz");
		mainFrame.getContentPane().setLayout(new BorderLayout(5, 5));
		mainFrame.addWindowListener(new FensterVerwaltung(mainFrame));

		pnlMenueLinks = new MenueLinks(modVerwArtikel, contMenue);
		pnlMenueOben = new MenueOben(modVerwArtikel, contMenue);
		pnlGrundbild = new Grundbild(modVerwArtikel, contMenue, verwEinstellungen, contEinstellungen);
		
		scrCardLayout = new JScrollPane(pnlGrundbild);
		scrCardLayout.setPreferredSize(new Dimension(1024, 768));
		

		mainFrame.add(pnlMenueLinks, BorderLayout.WEST);
		mainFrame.add(scrCardLayout, BorderLayout.CENTER);
		mainFrame.add(pnlMenueOben, BorderLayout.NORTH);

		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				mainFrame.pack();

				mainFrame.setLocationRelativeTo(null); // in der mitte

				mainFrame.setVisible(true);
			}
		});

	}

	// main
	public static void main(String[] args) {

		new Main();

	}

}
